#pragma once
#include "../commun/asmfile.h"
#include "../commun/types.h"

// Facilite la sortie des instructions produites

// < 0 si erreur. Extensions automatiquement ajoutées au chemin.
int output_open(const char* basename);

// à appeler à la fin des opérations.
void output_close();

// Donner aussi 1, 2 ou 3 opérandes 'Addr'.
void out(asm_Operation op, ...);
void out_at(int instr, asm_Operation op, ...);

// Change le premier opérande de la dernière instruction générée.
void output_changeDest(Addr addr);
// Vrai si ChangeDest a été utilisé sur la dernière instruction écrite.
int output_justUsedChangeDest();

// déplace deux segments de code précédemment générés.
void output_inverse(int debut, int milieu, int fin);

// index de la prochaine instruction générée
int output_cur();
// renvoie output_cur(), puis avance de 1. Il faudra appeler 'out_at()' pour 
// remplir le trou dans le programme.
int output_later();
// recule le curseur de 1
void output_unput();
